#!/bin/bash
# 安装并配置华为云 obsutil 工具（重命名解压目录为固定路径，确保稳定调用）

INSTALL_BASE="/usr/local/bin/obsutil"
STABLE_DIR="${INSTALL_BASE}/stable"
BIN_LINK="/usr/bin/obsutil"

# 颜色定义
YELLOW="\033[1;33m"
GREEN="\033[1;32m"
BLUE="\033[1;34m"
CYAN="\033[1;36m"
RED="\033[1;31m"
RESET="\033[0m"

echo -e "${BLUE}=====================================${RESET}"
echo -e "${CYAN}🌐 华为云 OBS 备份检查工具一键安装脚本${RESET}"
echo -e "${BLUE}-------------------------------------${RESET}"
echo -e "${YELLOW}本工具适用于CentOS 7，将完成以下任务：${RESET}"
echo -e "${GREEN}1.${RESET} 安装 obsutil 工具"
echo -e "${GREEN}2.${RESET} 配置 AK/SK 与 Endpoint（支持交互）"
echo -e "${GREEN}3.${RESET} 创建命令行软链接，可直接使用 ${CYAN}obsutil${RESET} 命令"
echo -e "${GREEN}4.${RESET} 检查 OBS 连通性"
echo -e "${BLUE}=====================================${RESET}\n"

# 安装 sendmail（如未安装）
if ! command -v sendmail &> /dev/null; then
    echo -e "${YELLOW}📦 安装 sendmail...${RESET}"
    yum install -y mailx sendmail
fi

# 创建安装目录
mkdir -p "$INSTALL_BASE"
cd "$INSTALL_BASE" || exit 1

# 下载并解压 obsutil
echo -e "${CYAN}📥 正在下载 obsutil...${RESET}"
wget -q https://obs-community.obs.cn-north-1.myhuaweicloud.com/obsutil/current/obsutil_linux_amd64.tar.gz
tar -xzf obsutil_linux_amd64.tar.gz
rm -f obsutil_linux_amd64.tar.gz

# 找到解压目录并重命名为 stable（不带版本号）
EXTRACTED_DIR=$(find . -maxdepth 1 -type d -name "obsutil_linux_amd64_*" | head -n 1)
if [ -d "$EXTRACTED_DIR" ]; then
    rm -rf "$STABLE_DIR"
    mv "$EXTRACTED_DIR" "$STABLE_DIR"
else
    echo -e "${RED}❌ 解压失败，未找到 obsutil 目录${RESET}"
    exit 1
fi

# 添加权限并软链接 obsutil 命令
chmod +x "$STABLE_DIR/obsutil"
ln -sf "$STABLE_DIR/obsutil" "$BIN_LINK"

# 显示版本
echo -e "\n${GREEN}✅ obsutil 安装成功，当前版本：${RESET}"
obsutil version

# 交互式配置 obsutil
read -p "请输入 AccessKey（AK）: " ak
read -p "请输入 SecretKey（SK）: " sk
read -p "请输入 Endpoint（默认: obs.cn-east-3.myhuaweicloud.com）: " endpoint
endpoint=${endpoint:-obs.cn-east-3.myhuaweicloud.com}

echo -e "\n🛠 正在配置 obsutil..."
obsutil config -i="$ak" -k="$sk" -e="$endpoint"

# 检查连通性
echo -e "\n${CYAN}🔍 正在检查 OBS 连通性...${RESET}"
echo -e "${YELLOW}如果连接正常，将显示您的 OBS 存储桶列表：${RESET}\n"

if result=$(obsutil ls -s 2>&1); then
    echo -e "${GREEN}✅ 连通性检查成功！${RESET}\n"
    echo "$result"
else
    echo -e "${RED}❌ 连通性检查失败！${RESET}"
    echo -e "${YELLOW}错误信息：${RESET}"
    echo "$result"
    echo -e "\n${YELLOW}请检查以下配置：${RESET}"
    echo "1. AK/SK 是否正确"
    echo "2. Endpoint 是否配置正确"
    echo "3. 网络连接是否正常"
    exit 1
fi

echo -e "\n${GREEN}✅ 配置完成，你现在可以使用 ${CYAN}obsutil${GREEN} 命令上传、下载和检查对象存储中的文件。${RESET}"